/**
 * \file point.h
 * \brief Point class header
 * \author Marc Laval
 * \version 0.1
 * \date 10/2011
 *
 */

#ifndef _POINT_H_
#define _POINT_H_

/*! \class Point
 *  \brief Point class used to store 2D coordinates
 */
class Point {
	int x;  ///< X-axis coordinate
	int y;  ///< Y-axis coordinate

public :
    /*! \brief Default constructor
     */
	Point();

	/*! \brief Constructor
	 *  \param x x coordinate
	 *  \param y y coordinate
     */
	Point(int x, int y);

	/*! \brief Copy constructor
	 *  \param copy Point to copy
     */
	Point(Point& copy);

    /*! \brief X getter
	 *  \return X value
     */
	int getX();

	/*! \brief Y getter
	 *  \return Y value
     */
	int getY();

	/*! \brief X setter
	 *  \param x X value
     */
	void setX(int x);

	/*! \brief Y setter
	 *  \param y Y value
     */
	void setY(int y);

	/*! \brief X and Y setter
	 *  \param x X value
	 *  \param y Y value
     */
	void setXY(int x, int y);

    /*! \brief "Equal to" operator
	 *  \param p Point to compare
	 *  \return true if equal, false otherwise
     */
	bool operator==(Point& p);

	 /*! \brief Setter operator
	 *  \param p Point
	 *  \return pointer to the setted point instance
     */
	Point* operator=(Point& p);
};

#endif
